The present invention relates to a system for monitoring and improving performance of client-server hypermedia, such as, for example, the downloading of pages and page components on the World Wide Web.
As the computer revolution advances, computer networking has become increasingly important. In recent years the number of computers which are connected to computer networks has increased rapidly. Not only are computers being connected with local networks, which might exist in a given building or group of buildings, but also with wide area networks, which commonly connect local area networks in widely separated locations, such as the different facilities of a large corporation. In fact, within the last several years it has become increasingly common for computers to be hooked up to a global network formed of a large number of sub-networks called the Internet.
An increasingly important use of networking is for distributing client-server networked hypermedia. In such a use, a server computer responds to a request from a client computer over an internetwork for a specific media objects, such as a World Wide Web page. It responds by sending the requested media object to the requesting client computer. The request message identifies the network address of the client computer which has sent it, the address of the server computer to which it is addressed and the address of the desired media object. The address of the desired media object is identified by a location specification which identifies both the address of the server computer to which the request is addressed and the address within the storage system of the server of the desired object. In the World Wide Web such an identifier is called Uniform Resource Locator, or URL.
Many requested media objects are composite objects. These contain within their data location specifications, such as URLs, which link to other, component, media objects, such as image, audio, video, or programming objects. They are automatically accessed and used in the display of their associated composite objects. For example, most World Wide Web pages include URL links to image files which are automatically requested and displayed as part of the such pages. In addition to such automatically called links, a media object, such as a World Wide Web page, can include links to media objects which are only requested if a user selects to have them called, such as by clicking a mouse on a portion of a computer screen associated with such a link.
The present invention relates to such client-server hypermedia. The World Wide Web is currently by far the most important example of such hypermedia, but in this specification and the claims when I use the word xe2x80x9cWebxe2x80x9d I mean not only to refer to the World Wide Web itself, as it currently exists, but also future forms of such client-server hypermedia, such as that which might exist on a second generation Internet that is currently being planned. Similarly, when I refer to URLs in the claims that follow I intend to include other location specifications which might be used in client-server hypertext media of the future.
It is common for those who distribute information and services over the Web through a server system to want to monitor the level of performance they are providing to users and, if possible, to modify the operation of the server so as to improve that performance.
In the prior art there have been multiple systems which enable operators of Web servers to chart information contained in URL requests which the server has received from client computers. This information includes such statistics as distribution of source addresses of client computers from which such requests have been received and the distribution of files which have been requested.
The prior art has also included server systems which monitor the performance of the server computer itself. For example, the prior art has includes system which can provide an indication of the degree of busyness of a server. Such systems can provide those who operate Web servers with valuable information about the number of URL requests the server is receiving and the number of messages or bytes a server is sending out at any point in time. They can also indicate the time delay between the receipt of a request for a given media object and the time that the object is sent out.
Such measurements have been used in so-called IP spreading servers. Such servers are comprised of at least one spreader computer and two or more backend servers connected by the Internet. The spreader computer distributes the work of responding to URL requests between its associated backend servers as a function of how busy each individual backend server is. In such IP spreading servers, URL links to the server are all addressed to the spreader computer. When the spreader receives such requests from a client, it selects which of its backend servers should handle the request. It then sends the URL request to the selected backend server by placing it on the Internet with the selected backend server""s Internet Protocol (xe2x80x9cIPxe2x80x9d) address as the request""s destination address. The spreader varies from normal Internet Protocol by using the source IP address of client which sent the URL request to the spreader rather than the spreader""s own IP address as the relayed request""s source address. When the backend server receives the relayed request, it places one or more messages containing the contents of the file identified in the request""s URL on the Internet. Each of these response messages is addressed to the client IP address identified by the source address in the relayed URL request received by the backend server. Like the spreader, the backend server varies from normal Internet Protocol by sending such response messages out with other than the backend server""s own address as the source address. Instead, it uses the spreader computer""s address as the source address for such response messages, since the client is expecting a response from the same address to which it sent the original URL request.
Unfortunately, monitoring performance on server systems does not give complete information about how long it actually takes a customer to display a given composite Web page. The display of the Web page normally only comes together at the client. The time to download a composite page includes the time required to download multiple different objects, and to my best knowledge no current servers determine which requests for Web page component are associated with which requests for Web pages. Monitoring performance on a server also fails to provide an accurate picture of the performance witnessed by clients because network delays external to the server can affect the performance observed by a client. Furthermore, when a server gets severely backed up, there often becomes a significant delay before a server can even accept receipt of a request, and there is no method for a server to measure delays which occur before it accepts receipt of a message.
To address the issue of monitoring how long it takes for Web objects to download onto client computers, the prior art has developed the technique of xe2x80x9cmimicingxe2x80x9d. This involves using one or more client computers located at various points on the Internet which have been programmed to measure the amount of time required to download a Web page and to provide a report on such measurements. Unfortunately this technique is spotty at best, because usually the number of mimicing computers, and the number of downloads to such computers, is extremely small compared to the number of clients and downloads a large server might have. Furthermore, mimicing is only a mechanical attempt to imitate the use of the server by its human users. As a result, it often fails to accurately monitor the performance actual human users of the server see.
It is an object of the present invention to provide apparatuses and methods for improving the ability of those who operate Web servers to monitor the service they are providing to client computers.
It is another object of the present invention to provide apparatuses and methods for enabling Web servers to improve the performance they provide to client computers.
The present invention relates to a system for providing client-server hypermedia. It includes a Web server comprised of one or more computers connected to each other and to client computers by a computer network. It receives URL requests from individual client computers requesting the transmission by the server to the client computers of individual data objects, such a Web pages or images, identified by URL. Such a server responds to each URL request by transmitting information including the requested data object to the client from which the request came.
According to one aspect of the invention the information which the server transmits in response to a URL request includes performance monitoring instructions which instruct the client computer to send to the server a performance message indicating the length of time required on the client for performancing an act associated with one or more of the transmitted data objects. In the preferred embodiments of the invention shown below such performance monitoring instructions include JavaScript contained in downloaded Web documents and cookies sent to client Web browsers in the HTTP headers with which such data objects are sent. In other embodiments other forms of instructions, such as, for example, Java or ActiveX applets, can be used.
Often the performance monitoring instructions instruct a client to monitor the time required to download a composite data object. They can also instruct the client to measure the time associated with other events, such as the time required to download individual component data objects; to execute a given segment of code, such as Java, JavaScript, or ActiveX code; or to execute a transaction which includes both the uploading and downloading of information, such as the submission of an HTML form and the downloading of a confirmation page. Performance monitoring instructions can also instruct a client to measure when a user aborts the downloading of a Web page. Commonly such instructions measure the time between events occurring in different downloaded objects. For example, download times are commonly measured from the time when a user clicks, within a first Web page, on a link for a second Web page to the time when that second Web page has been downloaded.
In the preferred embodiment of the invention the server creates a representation of the distribution of the client addresses from which performance messages indicating problems come. In such an embodiment, if a large number of such problem messages are sent from clients all across the portion of the network to which the server has sent data objects, the server generates an indication that there is a problem with the server itself If the addresses from which problem messages are sent are concentrated in a portion of the network address space associated with a networkEntity, the server generates an indication that there is a problem associated with that entity. Such entities include Internet Service Provider (xe2x80x9cISPxe2x80x9d) terminal servers through which users connect to the Internet by modem, and firewall computer through which clients on a corporate local area network connects to the Internet. If a given client computer generates a sufficient number of problem messages but there is not an abnormal number of problem messages associated either with the population of clients to which data objects have been sent or with the population of clients connected to the server through the same networkEntity as the given client, the server generates an indication that the individual given client is having a problem.
Preferably when the server detects a problem with the server, itself, with a networkEntity, or with an individual client, it automatically takes appropriate action. For example, in the preferred embodiment when a problem is detected with the server, the server automatically informs both clients and its operators, and it automatically starts sending out lighter versions of data objects, such as Web pages with fewer or smaller images. If the problem appears to be with a networkEntity or an individual client, it informs affected clients of such problems and offers them the choice of receiving lighter data objects. It is also preferred that the server use indications of download times provided by performance messages to provide an indication to clients of how long the completion of future download times is likely to take.
In the preferred embodiment the server also creates a representation of the distribution of addresses within the server from which data objects for which problem messages have been generated have been sent. If this distribution has a concentration in one portion of the server""s address space, such as that associated with one backend server computer, or one hard disk, the server generates an indication that a performance problem is localized within that portion of the server. If there is a concentration of problem messages associated with data objects from one portion of the server, the server automatically responds by decreasing the number of times it will cause that portion of the server to supply a given data object.
If a sufficient number of problem messages indicate a particular composite data object is having a high download time, the preferred embodiment causes the download time of the components of that composite data objects to be monitored. This can be useful, for example, in trying to determine how much of a Web page""s slow download time is caused by which component objects. In addition, if such monitoring indicates that the component objects causing the problem are localized on one backend server or hard drive, it can help locate such performance problems.
In the preferred embodiment, some monitoring instruction are only performed for a sampling of requests for a given URL, such as when there is a need to update a certain type of performance statistic on the server.
It is also preferred that the server alter the information it sends in response to a given URL request as a function of the performance messages it has received. For example, it can reduce the size, in terms of bytes, of data objects it sends when there is a performance problem. Similarly it can alter the performance monitoring instructions it sends in response to a URL request.
Many embodiments of the invention are used with a server system which uses IP spreading. In some such embodiments, the server""s spreader computer decides which backend server should respond to a given URL request as a function of performance messages which it has received. For example, this can be done as a function of the relative number of problem messages generated in response to objects downloaded from each backend servers. When the server is comprised of multiple computers, as in the case of IP spreading, it is normally preferred that all performance messages generated in response to data objects sent from the server""s computers be sent to a single performance monitoring computer. The IP spreader computer is normally the performance monitoring computer, since it often uses the performance monitoring to help determine its IP spreading.
According to another aspect of the invention an IP spreading server system varies which backend server it selectes to respond to a given URL request as a function of the source address of the request. Preferably the system monitors the relative download times to a given portion of the network from different backend servers, and responds to an indication that download times to the given network portion are quicker from a given backend server by increasing the number of URL requests from that network portion it redirects to the given backend server.
According to another aspect of the invention. a server automatically varies the size of Web data objects it sends to clients in response to a given URL request in response to indications the server is having problems responding to URL requests in a timely manner. According to yet another aspect of the invention, a server automatically increases its capacity to transmit data objects in response to such a indication.